//////////////////////////////////////////////////////////////////////////////////	 
//
//  ? ? ?   : main.c
//  ? ? ?   : v1.0
//  ?    ?   : oldZhai
//  ????   : AT89C51 ??0.96OLED I2C??????
//              ??: 
//              ----------------------------------------------------------------
//              GND    ???
//              VCC  ?5V?3.3v??
//              D0   P1^0(SCL)
//              D1   P1^1(SDA)      
//							????????oled.h???
//              ----------------------------------------------------------------
//******************************************************************************/
#include "REGX52.h"
#include "oled.h"
#include "tetris.h"

void update_screen();
 int main(void)
 {	
	u8 i,j,cleared;
		
	OLED_Init();			//???OLED  
	OLED_Clear();
	OLED_ShowString(0,HEIGHT/2,"===TETRIS===");
	Delay_1ms(2000);

	//地图
	memset(map, 0, WIDTH * HEIGHT * sizeof(char));
	generate();
	update_screen();
	while(1){
		if (0 == try_move_down()) {
			for (i = 0; i < 4; i++)
			{
				map[faller[i].Y][faller[i].X] = BLOCK;
			}
			clear_row();
			generate();
		}
		update_screen();
		OLED_ShowNum(HEIGHT*CELL_X,WIDTH,score,2,8);
		for(i=0;i<5;i++){
			//按下独立按键K1，注意是低电平触发
			if(0 == P3_1){
				try_move(RIGHT);
				update_screen();
			}
			if(0 == P3_0){
				try_move(LEFT);
				update_screen();
			}
			if(0 == P3_2){
				try_rotate();
				update_screen();
			}
			if(0 == P3_3){
				try_move_down();
				update_screen();
			}
			
		}

	}
	
}


void update_screen() {
	u8 i,j;

	//隐藏刚生成的骨块
	for (i =0; i < HEIGHT; i++)
	{
		// printc(i,0,'-');
		for (j = 0; j < WIDTH; j++) {
			if (AIR == map[i][j]) {
				printc(i,j,' ');
			}
			else {
				printc(i,j,'.');
			}
		}
		// printc(i,WIDTH-1,'-');
	}
	
}
	